home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1984-05-31 | 9.2 KB | 288 lines |
- 10 ' THIS GAME WAS WRITTEN BY PAUL MCKNIGHT WHILE STANDING AT AN IBM PARTS
- 20 'COUNTER WATCHING A BEAUTIFUL WOMAN SELECT AND DELIVER THE PARTS HE HAD
- 30 'ORDERED
- 40 '
- 50 'MAY BE REPRODUCED FOR ANY NON-COMMERCIAL PURPOSE
- 60 ' APRIL, 1982
- 61 CLS: LOCATE 5,21:PRINT"*******FREE SOFTWARE*******"
- 62 LOCATE 7,15: PRINT "PARTS VERSION 1.0, 80 COLUMN MONOCHROME"
- 63 LOCATE 9,5:PRINT "Paul McKnight, the author of this program, is a firm advocate of Public Domain"
- 64 PRINT "software. Please copy this program and pass it around to all your ADULT friends."
- 65 LOCATE 15,27: PRINT "Paul McKnight"
- 66 LOCATE 16,29: PRINT "Box 3392"
- 67 LOCATE 17,23: PRINT "Gaithersburg, MD 20878"
- 68 LOCATE 20,21: PRINT "PRESS SPACEBAR TO CONTINUE..."
- 69 INK$=INKEY$: IF INK$<>" " THEN 69
- 70 OPTION BASE 1
- 80 TIMESEED1=ASC(RIGHT$(TIME$,2))
- 90 TIMESEED2=100*ASC(MID$(TIME$,4,2))
- 100 RANDOMIZE (TIMESEED1+TIMESEED2)
- 110 NMAX=9
- 120 DIM BACK(2)
- 130 DIM PLAYER$(2)
- 140 DIM STATUS(2,NMAX)
- 150 DIM ARRAY$(2,3,NMAX)
- 160 ' THIS THREE-DIMENSIONAL ARRAY HOLDS THE PART NUMBER - PART NAME DATA BASE
- 170 ' FIRST DIMENSION DENOTES THE PLAYER (1 OR 2)
- 180 ' SECOND DIMENSION HOLDS 1) PLAYER ROUND 1 PART NAMES
- 190 ' 2) PLAYER ROUND 2 PART NAMES
- 200 ' 3) PLAYER PART NUMBERS
- 210 ' THIRD DIMENSION HOLDS THE ACTUAL NAME OR NUMBER SELECTED BY THE OTHER 2
- 220 ' EXAMPLES: ARRAY$(2,3,1) HOLDS THE PART NUMBER FOR ITEM 1 OF PLAYER 2
- 230 ' ARRAY$(1,2,7) HOLDS THE NAME OF PART 7 FOR PLAYER 1 IN ROUND 2
- 240 SCREEN 0,0,0,0: WIDTH 80
- 250 M1$="IS": M2$="IT": M3$="PEN": UPAS$="": PAS1$="SEX":PAS2$="sex": M4$="CL"
- 260 CLS: BEEP
- 270 KEY OFF
- 280 LOCATE 10,10
- 290 PRINT "WELCOME TO PARTS, AN EXCITING ADULT INTIMACY GAME"
- 300 PRINT SPC(25);"I AM THE REFEREE..."
- 310 PRINT
- 320 LOCATE ,10
- 330 PRINT "Parts starts off a little bit like strip poker"
- 340 LOCATE ,10
- 350 PRINT "and gets heavier. Therefore, it is password protected"
- 360 LOCATE ,10
- 370 PRINT "to keep out virgins and minors.": PRINT
- 380 LOCATE ,10
- 390 PRINT " To proceed, you will have to enter a password..."
- 400 FOR I=1 TO 3
- 410 A$=INKEY$: IF A$="" THEN 410
- 420 UPAS$=UPAS$+A$
- 430 NEXT I
- 440 IF UPAS$=PAS1$ OR UPAS$=PAS2$ THEN 490
- 450 CLS: PRINT "SORRY... WRONG PASSWORD...": FOR I=1 TO 1000: NEXT I
- 460 CHAIN "MENU"
- 470 '***************************************************
- 480 'ESTABLISH DATA BASE
- 490 BEEP:CLS
- 500 FOR I=1 TO 2: PRINT
- 510 PRINT SPC(20);"PLEASE ENTER NAME OF PLAYER NUMBER";I
- 520 LINE INPUT " NAME: ";PLAYER$(I)
- 530 IF PLAYER$(I)="" THEN 520
- 540 NEXT I
- 550 M5$="OR": M6$=M3$+M1$
- 560 CLS: PRINT "THANK YOU. NOW I WANT BOTH OF YOU TO COUNT YOUR ITEMS"
- 570 PRINT "OF CLOTHING. IF ONE OF YOU HAS MORE CLOTHING THAN THE"
- 580 PRINT "OTHER, PLEASE DISCARD ENOUGH SO THAT THE COUNT IS EQUAL."
- 590 M7$=M5$+M1$:M8$=M4$+M2$
- 600 PRINT
- 610 PRINT "NOW, WHEN YOU BOTH HAVE AN EQUAL NUMBER OF ITEMS OF CLOTHING,"
- 620 PRINT "PLEASE ENTER THAT NUMBER. (BETWEEN 1 AND 9)"
- 630 ITEM$=INPUT$(1)
- 640 M9$=M8$+M7$
- 650 TEMP=ASC(ITEM$)
- 660 IF TEMP<49 THEN PRINT "WE NEED AT LEAST ONE!": GOTO 610
- 670 IF TEMP>57 THEN PRINT "NO MORE THAN 9, PLEASE!": GOTO 610
- 680 BEEP
- 690 ITEMS=VAL(ITEM$)
- 700 FOR I=1 TO NMAX: READ ARRAY$(1,3,I),ARRAY$(2,3,I),ARRAY$(1,2,I)
- 710 ARRAY$(2,2,I)=ARRAY$(1,2,I)
- 720 NEXT I
- 730 DATA "1269024","1269521","FACE AND LIPS"
- 740 DATA "6520873","1174354","BUTTOCKS"
- 750 DATA "1132078","1606424","LEFT BREAST"
- 760 DATA "1269037","1269731","RIGHT LEG"
- 770 DATA "1269964","1269045","LEFT LEG"
- 780 DATA "1334531","1466650","EARS"
- 790 DATA "1269344","1269454","RIGHT BREAST"
- 800 DATA "1269880","1269901","NECK"
- 810 DATA "1236969","1269693","DUMMY"
- 820 CLS
- 830 FOR I=1 TO 2:PRINT
- 840 PRINT PLAYER$(I);", NOW I WANT YOU TO ENTER THE NAMES OF YOUR ITEMS"
- 850 PRINT "OF CLOTHING. (PRESS ENTER AFTER EACH ITEM NAME.)"
- 860 FOR K=1 TO ITEMS
- 870 PRINT K;
- 880 LINE INPUT " "; TEMP$
- 890 IF TEMP$="" THEN LOCATE 4+K,1: GOTO 870
- 900 ARRAY$(I,1,K)=TEMP$
- 910 NEXT K
- 920 PRINT: PRINT "THANK YOU, ";PLAYER$(I)
- 930 BEEP: GOSUB 2110: CLS
- 940 NEXT I
- 950 FOR I=1 TO 2: PRINT
- 960 PRINT PLAYER$(I);", ARE YOU MALE OR FEMALE?"
- 970 PRINT "ENTER 6 IF MALE. ENTER 9 IF FEMALE."
- 980 TEMP$=INKEY$
- 990 IF TEMP$="6" THEN ARRAY$(I,2,9)=M6$: ARRAY$(I,2,3)="LEFT NIPPLE": ARRAY$(I,2,7)="RIGHT NIPPLE": GOTO 1030
- 1000 IF TEMP$="9" THEN ARRAY$(I,2,9)=M9$: GOTO 1030
- 1010 IF TEMP$="" THEN 980
- 1020 GOTO 970
- 1030 PRINT "THANK YOU, "; PLAYER$(I):PRINT: PRINT: PRINT
- 1040 NEXT I
- 1050 GOSUB 2110
- 1060 '***********************************************************
- 1070 REM HERE COMES THE MAIN LOOP
- 1080 FOR ROUND=1 TO 2
- 1090 GOSUB 2470 ' INITIALIZE ORDER STATUS ARRAY
- 1100 IF ROUND=2 THEN ITEMS=9
- 1110 '**************************
- 1120 FOR LOOP=1 TO (ITEMS+1): CLS
- 1130 PRINT SPC(25); "ROUND"; LOOP
- 1140 SOUND 1500,10
- 1150 FOR PAUSE=1 TO 500: NEXT PAUSE
- 1160 '**************
- 1170 FOR TURN= 1 TO 2
- 1180 IF TURN= 1 THEN OTHER= 2
- 1190 IF TURN= 2 THEN OTHER= 1
- 1200 IF LOOP= ITEMS+1 THEN GOSUB 1810: GOTO 1590
- 1210 CLS
- 1220 PRINT PLAYER$(TURN);", IT IS YOUR TURN TO ORDER A PART."
- 1230 PRINT "HERE IS A LIST OF ";PLAYER$(OTHER);"'S PART NUMBERS:"
- 1240 FOR N=1 TO ITEMS
- 1250 PRINT N,ARRAY$(OTHER,3,N),
- 1260 IF STATUS(OTHER,N)=1 THEN PRINT ARRAY$(OTHER,ROUND,N);" *DELIVERED*": GOTO 1290
- 1270 IF STATUS(OTHER,N)=2 THEN PRINT ARRAY$(OTHER,ROUND,N);" *BACK-ORDERED*";
- 1280 PRINT " "
- 1290 NEXT N
- 1300 PRINT "ENTER THE LINE NUMBER OF THE PART YOU WANT TO ORDER:"
- 1310 PRINT "(OR ENTER B TO CHECK ON YOUR BACK ORDERS):"
- 1320 TEMP$=INPUT$(1)
- 1330 IF TEMP$="B" OR TEMP$="b" THEN GOSUB 2160: GOTO 1210
- 1340 ARITEM$=STR$(ITEMS)
- 1350 ARITEM$=RIGHT$(ARITEM$,1)
- 1360 IF TEMP$<"1" OR TEMP$>ARITEM$ THEN 1300
- 1370 ORDER=VAL(TEMP$)
- 1380 PRINT ORDER
- 1390 PART$=ARRAY$(OTHER,ROUND,ORDER)
- 1400 IF STATUS(OTHER,ORDER)=1 THEN GOSUB 1780: GOTO 1300
- 1410 IF STATUS(OTHER,ORDER)=2 THEN GOSUB 1780: GOTO 1300
- 1420 PRINT "THANK YOU, ",PLAYER$(TURN): FOR PAUSE=1 TO 400: NEXT PAUSE
- 1430 SOUND 2000,5
- 1440 CLS: PRINT PLAYER$(OTHER);","
- 1450 PRINT PLAYER$(TURN);" HAS ORDERED YOUR ";PART$;"."
- 1460 PRINT "PRESS THE SPACEBAR IF YOU WANT TO DELIVER THE ORDER."
- 1470 PRINT "PRESS THE LETTER *B* TO BACK-ORDER IT..."
- 1480 TEMP$=INKEY$
- 1490 IF TEMP$=" " THEN 1520
- 1500 IF TEMP$="B" OR TEMP$="b" THEN 1560
- 1510 GOTO 1480
- 1520 GOSUB 2540 ' TELL OTHER TO DELIVER PART
- 1530 IF ROUND=2 THEN GOSUB 2030
- 1540 GOSUB 1920
- 1550 STATUS(OTHER,ORDER)=1: GOTO 1590
- 1560 STATUS(OTHER,ORDER)=2: SOUND 1000,7
- 1570 PRINT ARRAY$(OTHER,ROUND,ORDER);" BACK-ORDERED"
- 1580 BACK(OTHER)=BACK(OTHER)+1: PRINT: PRINT
- 1590 FOR I=1 TO 600: NEXT I
- 1600 NEXT TURN
- 1610 '************
- 1620 NEXT LOOP
- 1630 '**************************
- 1640 ON ROUND GOTO 1650,1710
- 1650 CLS: PRINT "CONGRATULATIONS, YOU HAVE FINISHED PART 1 OF 'PARTS'."
- 1660 PRINT "NOW, BEFORE YOU GO ON TO PART 2, I ADVISE YOU TO GO TAKE"
- 1670 PRINT "A SHOWER TOGETHER AND GET EACH OTHER SQUEAKY CLEAN. THE"
- 1680 PRINT "NEXT SESSION DEALS WITH PARTS OF YOUR BODIES INSTEAD OF"
- 1690 PRINT "PIECES OF YOUR CLOTHING."
- 1700 BACK(1)=0: BACK(2)=0: GOSUB 1920: GOTO 1730
- 1710 CLS: PRINT "I HOPE YOU HAVE ENJOYED PLAYING PARTS. I HOPE YOU HAVE"
- 1720 PRINT "ENJOYED EACH OTHER. HAVE A NICE NIGHT."
- 1730 NEXT ROUND
- 1740 '***************
- 1750 GOSUB 1920
- 1760 GOTO 2140
- 1770 '***********************************************************
- 1780 PRINT "THAT PART HAS ALREADY BEEN ORDERED."
- 1790 RETURN
- 1800 '**************************
- 1810 IF BACK(OTHER)=0 THEN PRINT PLAYER$(OTHER);" HAS NO BACK-ORDERS TO DELIVER.": GOSUB 2110: GOTO 1890
- 1820 CLS:
- 1830 PRINT PLAYER$(OTHER);", THIS IS THE LAST ROUND. IT'S TIME TO DELIVER"
- 1840 PRINT "ALL OF YOUR BACK-ORDERS:":PRINT: PRINT
- 1850 GOSUB 2390
- 1860 PRINT
- 1870 IF ROUND=2 THEN PRINT PLAYER$(TURN);" YOU KNOW WHAT TO DO WITH PARTS BY NOW..."
- 1880 GOSUB 1920
- 1890 RETURN
- 1900 '**************************
- 1910 'WAIT ROUTINE
- 1920 PRINT
- 1930 IF RND<0.8 THEN 1970
- 1940 K=INT(RND*9+1)
- 1950 ON K GOSUB 2580,2600,2620,2640,2660,2680,2700,2720,2750
- 1960 PRINT
- 1970 PRINT SPC(20); "HIT SPACEBAR TO PROCEED."
- 1980 TEMP$=INKEY$
- 1990 IF TEMP$=" " THEN RETURN
- 2000 GOTO 1980
- 2010 '***************************
- 2020 'MESSAGE TO GO WITH DELIVERED BODY PARTS
- 2030 PRINT: PRINT PLAYER$(TURN);", YOU ARE TO TOUCH, CARESS, MASSAGE, FONDLE,"
- 2040 PRINT "AND/OR KISS "; PLAYER$(OTHER);"'S ";PART$;". ";
- 2050 PRINT " YOU CAN ALSO"
- 2060 PRINT "GO BACK AND PLAY WITH ANY PART ALREADY DELIVERED."
- 2070 PRINT "TAKE YOUR TIME. WHEN YOU BOTH AGREE, CONTINUE..."
- 2080 RETURN
- 2090 '**************************
- 2100 'THIS IS THE PAUSE SUBROUTINE
- 2110 FOR N=1 TO 1000: NEXT N: RETURN
- 2120 '********************************
- 2130 ' THIS IS THE LEGAL EXIT
- 2140 CHAIN "MENU"
- 2150 '''******************************
- 2160 ' BACK-ORDER CHECK ROUTINE
- 2170 IF BACK(OTHER)=0 THEN CLS: PRINT "THERE ARE NO PENDING BACK-ORDERS": GOSUB 1920: RETURN
- 2180 GOSUB 2390
- 2190 PRINT
- 2200 PRINT PLAYER$(OTHER);", ENTER THE LINE NUMBER OF ANY BACK-ORDER YOU WISH TO DELIVER NOW."
- 2210 PRINT "HIT THE SPACEBAR IF YOU DON'T WANT TO DELIVER A BACK-ORDER."
- 2220 TEMP$=INKEY$
- 2230 IF TEMP$=" " THEN RETURN
- 2235 IF TEMP$<"1" OR TEMP$>"9" THEN 2220
- 2240 IF TEMP$="" THEN 2220
- 2250 BVAL=VAL(TEMP$)
- 2260 IF BVAL> ITEMS THEN 2200
- 2270 IF STATUS(OTHER,BVAL) >< 2 THEN PRINT "NOT BACK-ORDERED": GOTO 2200
- 2280 PRINT
- 2290 PART$=ARRAY$(OTHER,ROUND,BVAL)
- 2300 GOSUB 2540
- 2310 STATUS(OTHER,BVAL)=1
- 2320 IF TEMP$=" " THEN RETURN
- 2330 IF TEMP$="" THEN 2220
- 2340 BACK(OTHER)=BACK(OTHER)-1: PRINT: PRINT
- 2350 GOSUB 1920
- 2360 RETURN
- 2370 '***********************************
- 2380 ' LIST BACK-ORDERED ITEMS
- 2390 FOR N=1 TO ITEMS
- 2400 IF STATUS(OTHER,N)<> 2 THEN 2420
- 2410 PRINT N,ARRAY$(OTHER,ROUND,N);" BACK-ORDERED"
- 2420 NEXT N
- 2430 RETURN
- 2440 '************************************
- 2450 'THIS SUBROUTINE WILL INITIALIZE THE STATUS ARRAY
- 2460 '0 IS NOT ORDERED 1 IS DELIVERED 2 IS BACK-ORDERED
- 2470 FOR I=1 TO 2
- 2480 FOR K=1 TO NMAX
- 2490 STATUS(I,K)=0
- 2500 NEXT K
- 2510 NEXT I
- 2520 RETURN
- 2530 '**************************************
- 2540 PRINT
- 2550 PRINT "O.K., ";PLAYER$(OTHER);", DELIVER YOUR ";PART$;" TO ";PLAYER$(TURN)
- 2560 RETURN
- 2570 '*************************************
- 2580 PRINT "I hear heavy breathing..."
- 2590 RETURN
- 2600 PRINT "I smell smoke. ";PLAYER$(OTHER);" must be getting hot..."
- 2610 RETURN
- 2620 PRINT "I hope no one has a heart attack..."
- 2630 RETURN
- 2640 PRINT "This is fun!"
- 2650 RETURN
- 2660 PRINT "I'm getting a little bit excited myself..."
- 2670 RETURN
- 2680 PRINT "Remember, I'm the referee and I get to watch everything..."
- 2690 RETURN
- 2700 PRINT "What a nice way to get acquainted..."
- 2710 RETURN
- 2720 IF BACK(OTHER)=0 THEN 2740
- 2730 PRINT "Remember, hands off the back-ordered parts!"
- 2740 RETURN
- 2750 IF ROUND=1 THEN 2770
- 2760 PRINT "Remember, don't play with any undelivered parts!"
- 2770 RETURN
-